package com.tvunetworks.center.device.mapper;

import com.tvunetworks.center.common.model.vo.TimeLockDeviceMsgVo;
import com.tvunetworks.center.device.model.TimeLockEvent;
import com.tvunetworks.center.device.model.TimeLockMsg;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * @author Etan Yang
 * @create: 2021/10/13 16:04
 */
public interface TimeLockEventMapper extends Mapper<TimeLockEvent> {
    /**
     * 根据pid查询正在timelock的设备集合
     * @param peerIds peerIds
     * @return List
     */
    List<String> listSynchronizingDevice(@Param("peerIds") List<String> peerIds);

    /**
     * 根据rid获取正在执行的event
     * @param rid rid
     * @return TimeLockEvent
     */
    TimeLockEvent getExecutingEventByPeerId(@Param("rid") String rid);

    /**
     * 根据intranetIps获取正在执行的设备
     *
     * @param intranetIps 内网ip集合
     * @param eventId 如果不为null，则排除该eventId
     * @return 返回已经开启timeLock的设备
     */
    List<Map<String, String>> listSynchronizingDeviceByIntranetIps(@Param("intranetIps") Collection<String> intranetIps, @Param("eventId") String eventId);

    /**
     * 获取所有同步R的信息
     * @return 同步R的信息
     */
    List<TimeLockDeviceMsgVo> getAllReceiverTimeLockMsg();

    /**
     * 获取所有同步R的信息
     * @param peerIds 需要获取的peerId集合
     * @return 返回需要的timeLockMsg信息
     */
    List<TimeLockMsg> listTimeLockMsgByPeerIds(@Param("peerIds") List<String > peerIds);

    /**
     * 根据 userId 查询当前账号下的TimeLockPack设备信息
     * @param userId userId
     * @return List
     */
    List<TimeLockDeviceMsgVo> listOpenTimeLockPackByUserId(@Param("userId") String userId);
}
